//
//  WBNavigationViewController.swift
//  WeiBo
//
//  Created by 尹琼 on 2017/4/27.
//  Copyright © 2017年 尹琼. All rights reserved.
//

import UIKit

class WBNavigationViewController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
      /**
         因为每一个导航栏都有一个rootViewController，所以导航栏是在栈顶，在这里更改导航栏的一些设置的话，并不合适，会导致全局的所有导航栏样式都固定，更好的办法是，写一个扩展，首先在WBBaseViewController 中写一个默认的方法，如果WBBaseViewController子类有自己的设置，就子类重写方法就是了，这样是最灵活多变的
         */
        
    }
}



// MARK: - 重写push方法，统一设置返回按钮
extension WBNavigationViewController {
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        if childViewControllers.count > 0 {
          
            //隐藏taBar
            viewController.hidesBottomBarWhenPushed = true
            
            //判断控制器的类型
            if let vc = viewController as? WBBaseViewController {
                var title = "返回"
                //判断控制器级数,只有一个子控制器的时候，显示栈底控制器的标题
                if childViewControllers.count == 1 {
                    //显示标题
                    title = childViewControllers.first?.title ?? "返回"
                }
                vc.navigationItem.leftBarButtonItem = UIBarButtonItem.backItem(title: title, taget: self, action: #selector(popToParent))   
            }
        }
        
       super.pushViewController(viewController, animated: animated)
    }

    /// POP 返回到上一级控制器
    //@objc： 用oc的运行时，在需要时候才动态反射方法，既保证了方法的私有，又保证了方法正常调用
    @objc fileprivate func popToParent() {
        popViewController(animated: true)
    }

}
